﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Core.Concrete
{
    class CarsCore : Zeus
    {
        #region Select
       
       ///<summary>
       /// Obtiene el listado de Marcas
       /// </summary>
        public IQueryable<DataAccess.VehiculoMarca> GetAllMarcas()
        {
            return db.VehiculoMarcas;
        }

        ///<summary>
        /// Metodo para otener el listado de Marcas activas en el sistema
        ///</summary>
        public IQueryable<DataAccess.VehiculoMarca> GetActiveMarca()
        {
            try
            {
                var Lista = db.VehiculoMarcas.Where(d => d.Status.Equals(true));
                return Lista;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        ///Obtiene el listado de Todos los Modelos
        ///</summary>
        public IQueryable<DataAccess.VehiculoModelo> GetAllModelos()
        {
            try
            {
                return db.VehiculoModelos;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        ///Metodo para obtener el listado de Modelos Activos en sistema
        ///</summary>
        public IQueryable<DataAccess.VehiculoModelo> GetActiveModel()
        {
            try
            {
                var _list = db.VehiculoModelos.Where(d => d.Status.Equals(true));
                return _list;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        ///Obtiene el listado de todas las ediciones en BD
        ///</summary>
        public IQueryable<DataAccess.VehiculoEdicion> GetAllEdiciones()
        {
            try
            {
                return db.VehiculoEdicions;
            }
            catch 
            {
                return null;
            }
        }

        ///<summary>
        /// Metodo para obtener el listado de las ediciones activas en el sistema
        ///</summary>
        public IQueryable<DataAccess.VehiculoEdicion> GetActiveEdicion()
        {
            try
            {
                var _list = db.VehiculoEdicions.Where(u => u.Status.Equals(true));
                return _list;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        ///Metodo para obtener el listado de todos los vehiculos registrados
        ///</summary>
        public IQueryable<DataAccess.Vehiculo> GetAllVehiculos()
        {
            try 
            {
                return db.Vehiculos;
            }
            catch 
            {
                return null;
            }

        }
        
        ///<summary>
        ///Metodo para obtener el listado de vehiculos activos en el sistema
        ///</summary>
        public IQueryable<DataAccess.Vehiculo> GetActiveVehiculos()
        {
            try
            {
                var _list = db.Vehiculos.Where(d => d.Status.Equals(true));
                return _list;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        ///Obtiene el listado de Modelos segun la Marca
        ///</summary>
        public IQueryable<DataAccess.VehiculoModelo> GetModelosMarca(int idMarca)
        {
            try
            {
                var ListModelo = db.VehiculoModelos.Where(u => u.IdVehiculoMarca.Equals(idMarca) && u.Status.Equals(true));
                return ListModelo;
            }
            catch { 
                return null; 
            }
        }

        ///<summary>
        ///Obtiene el listado de Edicion segun el modelo
        ///</summary>
        public IQueryable<DataAccess.VehiculoEdicion> GetEdicionModelo(int idModelo)
        {
            try
            {
                var ListEdicion = db.VehiculoEdicions.Where(u => u.IdVehiculoModelo.Equals(idModelo) && u.Status.Equals(true));
                return ListEdicion;
            }
            catch
            {
                return null;
            }
        }

        ///<summary>
        /// Obtiene el listado de vehiculos de una misma edicion
        ///</summary>
        public IQueryable<DataAccess.Vehiculo> GetVehiculoEdicion(int idEdicion)
        {
            try
            {
                var ListVehiculos = db.Vehiculos.Where(u => u.IdVehiculoEdicion.Equals(idEdicion) && u.Status.Equals(true));
                return ListVehiculos;
            }
            catch 
            {
                return null;
            }
        }

        ///<summary>
        /// Obtine el listado de vehiculos asociados a un mismo usuario 
        ///</summary>
        public IQueryable<DataAccess.Vehiculo> GetVehiculosUsuario(int idUsuario)
        {
            try
            {
                var ListVehiculos = db.Vehiculos.Where(u => u.IdUsuario.Equals(idUsuario) && u.Status.Equals(true));
                return ListVehiculos;
            }
            catch
            {
                return null;
            }
        }

        #endregion

        #region Create

        ///<summary>
        /// Funcion para crear una nueva marca
        ///</summary>
        public int CrearMarca(DataAccess.VehiculoMarca marca)
        {
            try
            {
                int _id = 0;
               // _id = db.VehiculoMarcas.
                return _id;
            }
            catch 
            {
                return 0;
            }
        }

        ///<summary>
        ///Funcion para crear un nuevo modelo de una marca
        ///</summary>
        public int CrearModelo()
        {
            try
            {
                return 0;
            }
            catch
            {
                return 0;
            }
        }

        ///<summary>
        ///Funcion para crear una nueva edicion de un modelo
        ///</summary>
        public int CrearEdicion()
        {
            try
            {
                return 0;
            }
            catch
            {
                return 0;
            }
        }

        ///<summary>
        ///Funcion para crear un nuevo vehiculo
        ///</summary
        public int CrearVehiculo()
        {
            try
            {
                return 0;

            }
            catch
            {
                return 0;
            }
        }

        #endregion

    }
}
